package com.ys.service.business.impl;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ys.entity.business.TpAplusFile;
import com.ys.mapper.business.DiySqlMapper;
import com.ys.mapper.business.TpAplusFileMapper;
import com.ys.service.business.TpAplusFileService;
import com.ys.vo.R;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;

import java.util.Map;


/**
 * A+管理
 */
@Service("tpAplusFileService")
public class TpAplusFileServiceImpl implements TpAplusFileService {
	private static final Logger logger = LoggerFactory.getLogger(TpAplusFileServiceImpl.class);

	@Autowired
	private TpAplusFileMapper tpAplusFileMapper;

	@Autowired
	private DiySqlMapper diySqlMapper;



	/**
	 * 新增
	 */
	@Override
	public R add(Map<String, Object> params) throws Exception{
		logger.info("A+管理新增传参："+params);
		TpAplusFile tpAplusFile = JSON.parseObject(JSON.toJSONString(params), TpAplusFile.class);
		int res = tpAplusFileMapper.insert(tpAplusFile);
		if(res>0){
			return R.ok();
		}else {
			return R.error("操作失败！");
		}
	}



	/**
	 * 修改
	 */
	@Override
	public R update(Map<String, Object> params) {
		logger.info("A+管理修改传参："+params);
		TpAplusFile tpAplusFile = JSON.parseObject(JSON.toJSONString(params), TpAplusFile.class);
		int res = tpAplusFileMapper.update(tpAplusFile);
		if(res>0){
			return R.ok();
		}else {
			return R.error("操作失败！");
		}
	}

	//批量新增、修改
	@Override
	@Transactional(timeout=120,propagation= Propagation.REQUIRES_NEW)
	public R addOrUpdateByList(Map<String, Object> params) throws Exception {
		JSONArray dataList = JSONArray.parseArray(params.get("dataList").toString());
		//int res = 0;
		if(dataList.size()>0) {
			for (int i = 0; i < dataList.size(); i++) {
				JSONObject jsonObj = dataList.getJSONObject(i);
				TpAplusFile tpAplusFile = new TpAplusFile();
				if(Long.parseLong(jsonObj.get("id").toString())<=0){//新增
					//判断同一家公司不允许重复
					if (new TpAplusFile().setBoutiqueSiteDetailId(Long.parseLong(params.get("boutiqueSiteDetailId").toString())).setVgsBm(jsonObj.get("vgsBm").toString()).count() != 0){
						TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
						return R.error(jsonObj.get("vgsBm").toString()+"公司编码的附件已存在,不允许新增!");
					}
					tpAplusFile.setBoutiqueId(Long.parseLong(params.get("boutiqueId").toString()));//精品库Id
					tpAplusFile.setCode(params.get("code").toString());//商品编码
					tpAplusFile.setBoutiqueSiteDetailId(Long.parseLong(params.get("boutiqueSiteDetailId").toString()));//精品库站点信息表Id
					tpAplusFile.setVgsBm(jsonObj.get("vgsBm").toString());//公司编码
					tpAplusFile.setFileName(jsonObj.get("fileName").toString());//附件名称
					tpAplusFile.setFilePath(jsonObj.get("filePath").toString());//附件链接
					tpAplusFile.setFileType(jsonObj.get("fileType").toString());//附件文件类型（后缀）
					tpAplusFile.setFileSize(jsonObj.get("fileSize").toString());//附件大小
					tpAplusFile.setFileSizeUnit(jsonObj.get("fileSizeUnit").toString());//附件大小单位
					tpAplusFile.setStatus(1);
					tpAplusFileMapper.insert(tpAplusFile);

				}else {//修改
					tpAplusFile.setId(Long.parseLong(jsonObj.get("id").toString()));//id
					tpAplusFile.setBoutiqueId(Long.parseLong(params.get("boutiqueId").toString()));//精品库Id
					tpAplusFile.setCode(params.get("code").toString());//商品编码
					tpAplusFile.setBoutiqueSiteDetailId(Long.parseLong(params.get("boutiqueSiteDetailId").toString()));//精品库站点信息表Id
					tpAplusFile.setVgsBm(jsonObj.get("vgsBm").toString());//公司编码
					tpAplusFile.setFileName(jsonObj.get("fileName").toString());//附件名称
					tpAplusFile.setFilePath(jsonObj.get("filePath").toString());//附件链接
					tpAplusFile.setFileType(jsonObj.get("fileType").toString());//附件文件类型（后缀）
					tpAplusFile.setFileSize(jsonObj.get("fileSize").toString());//附件大小
					tpAplusFile.setFileSizeUnit(jsonObj.get("fileSizeUnit").toString());//附件大小单位
					tpAplusFile.setStatus(1);
					tpAplusFileMapper.update(tpAplusFile);
				}
			}
		}
		return R.ok();
	}


	//删除
	@Override
	public int del(long id){
		return tpAplusFileMapper.deleteTrue(id);
	}

	//根据精品库站点信息表Id删除
	@Override
	public int delByBoutiqueSiteDetailId(long id){
		diySqlMapper.delAplusFileByBoutiqueSiteDetailId(id);
		return 1;
	}
}
